package com.gupaoedu.type;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gupaoedu.domain.Comment;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;

import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * @Author: chenpp
 * @Date: 2020/2/26 21:28
 *
 *
 */
public class JSONTypeHandler extends BaseTypeHandler<Comment> {
    public void setNonNullParameter(PreparedStatement ps, int i, Comment parameter, JdbcType jdbcType)
            throws SQLException {
        // 设置 String 类型的参数的时候调用，Java类型到JDBC类型
        // 注意只有在字段上添加typeHandler属性才会生效
        // insertBlog name字段
        ps.setString(i, JSONObject.toJSONString(parameter));
    }

    public Comment getNullableResult(ResultSet rs, String columnName) throws SQLException {
        // 根据列名获取 String 类型的参数的时候调用，JDBC类型到java类型
        // 注意只有在字段上添加typeHandler属性才会生效
        String comment = rs.getString(columnName);
        return JSON.parseObject(comment,Comment.class);
    }

    public Comment getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
        // 根据下标获取 String 类型的参数的时候调用
        String comment = rs.getString(columnIndex);
        return JSON.parseObject(comment,Comment.class);
    }

    public Comment getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
        String comment = cs.getString(columnIndex);
        return JSON.parseObject(comment,Comment.class);
    }
}